package com.opengms.HydroModelsIntegration.Dao;

import com.opengms.HydroModelsIntegration.Domain.InpData;
import net.sf.json.JSONObject;

import java.io.BufferedReader;
import java.util.ArrayList;

public interface IInpParser {
    BufferedReader openFile(String fileName);
    ArrayList<String> readTitle(BufferedReader bufferedReader, BufferedReader bufferedReaderNextline);
    boolean nextSection(String line);
    InpData.Option readOption(BufferedReader bufferedReader, BufferedReader bufferedReaderNextline);
    InpData.Evaporation readEvaporation(BufferedReader bufferedReader, BufferedReader bufferedReaderNextline);
    ArrayList<InpData.Raingage> readRaingage(BufferedReader bufferedReader, BufferedReader bufferedReaderNextline);
    ArrayList<InpData.Subcatchment> readSubcatchment(BufferedReader bufferedReader, BufferedReader bufferedReaderNextline);
    ArrayList<InpData.Subarea> readSubarea(BufferedReader bufferedReader, BufferedReader bufferedReaderNextline);
    ArrayList<InpData.Infiltration> readInfiltration(BufferedReader bufferedReader, BufferedReader bufferedReaderNextline);
    ArrayList<InpData.Junction> readJunction(BufferedReader bufferedReader, BufferedReader bufferedReaderNextline);
    ArrayList<InpData.Outfall> readOutfall(BufferedReader bufferedReader, BufferedReader bufferedReaderNextline);
    ArrayList<InpData.Storage> readStorage(BufferedReader bufferedReader, BufferedReader bufferedReaderNextline);
    ArrayList<InpData.Conduit> readConduit(BufferedReader bufferedReader, BufferedReader bufferedReaderNextline);
    ArrayList<InpData.Xscetion> readXscetion(BufferedReader bufferedReader, BufferedReader bufferedReaderNextline);
    ArrayList<InpData.Losses> readLosses(BufferedReader bufferedReader, BufferedReader bufferedReaderNextline);
    ArrayList<InpData.Curve> readCurve(BufferedReader bufferedReader, BufferedReader bufferedReaderNextline);
    ArrayList<InpData.Timeseries> readTimeseries(BufferedReader bufferedReader, BufferedReader bufferedReaderNextline);
    InpData.Report readReport(BufferedReader bufferedReader, BufferedReader bufferedReaderNextline);
    ArrayList<InpData.Tag> readTag(BufferedReader bufferedReader, BufferedReader bufferedReaderNextline);
    InpData.Map readMap(BufferedReader bufferedReader, BufferedReader bufferedReaderNextline);
    ArrayList<InpData.Coordinate> readCoordinate(BufferedReader bufferedReader, BufferedReader bufferedReaderNextline);
    ArrayList<InpData.Vertice> readVertice(BufferedReader bufferedReader, BufferedReader bufferedReaderNextline);
    ArrayList<InpData.Polygon> readPolygons(BufferedReader bufferedReader, BufferedReader bufferedReaderNextline);
    ArrayList<InpData.Symbol> readSymbol(BufferedReader bufferedReader, BufferedReader bufferedReaderNextline);
    JSONObject getGeojsonFromInp();
}
